package com.bootdo.lvyou_specialty.service.impl;

import com.bootdo.wx.dao.ConfigDao;
import com.bootdo.wx.domain.Config;
import com.bootdo.wx.service.ConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.bootdo.lvyou_specialty.dao.LvyouSpecialtyGzhConfigDao;
import com.bootdo.lvyou_specialty.domain.LvyouSpecialtyGzhConfig;
import com.bootdo.lvyou_specialty.service.LvyouSpecialtyGzhConfigService;
import org.springframework.transaction.annotation.Transactional;


@Service
public class LvyouSpecialtyGzhConfigServiceImpl implements LvyouSpecialtyGzhConfigService {
	@Autowired
	private LvyouSpecialtyGzhConfigDao lvyouSpecialtyGzhConfigDao;

	@Autowired
	private ConfigDao configDao;
	
	@Override
	public LvyouSpecialtyGzhConfig get(Long id){
		return lvyouSpecialtyGzhConfigDao.get(id);
	}
	
	@Override
	public List<LvyouSpecialtyGzhConfig> list(Map<String, Object> map){
		return lvyouSpecialtyGzhConfigDao.list(map);
	}
	
	@Override
	public int count(Map<String, Object> map){
		return lvyouSpecialtyGzhConfigDao.count(map);
	}

	@Transactional
	@Override
	public int save(LvyouSpecialtyGzhConfig lvyouSpecialtyGzhConfig){

		LvyouSpecialtyGzhConfig aDefault = lvyouSpecialtyGzhConfigDao.getDefault();
		if(lvyouSpecialtyGzhConfig.getId() != null) {

			if (aDefault.getId().intValue() != lvyouSpecialtyGzhConfig.getId()) {
				if (lvyouSpecialtyGzhConfig.getIsDefault() == 2) {
					aDefault.setIsDefault(1);
					lvyouSpecialtyGzhConfigDao.update(aDefault);
				}
			}
			lvyouSpecialtyGzhConfigDao.update(lvyouSpecialtyGzhConfig);

			LvyouSpecialtyGzhConfig aDefaultNew = lvyouSpecialtyGzhConfigDao.getDefault();
			Config yuanConfig = configDao.getByUserId(1L);
			if (yuanConfig == null) {
				yuanConfig = new Config();
			}
			yuanConfig.setWxAppId(aDefaultNew.getAppId());
			yuanConfig.setWxAppSecret(aDefaultNew.getAppsecret());
			yuanConfig.setUserId(1L);
			if (yuanConfig.getId() == null) {
				return configDao.save(yuanConfig);
			}
			return configDao.update(yuanConfig);
		}else {
			if (aDefault != null) {
				if (lvyouSpecialtyGzhConfig.getIsDefault() == 2) {
					aDefault.setIsDefault(1);
					lvyouSpecialtyGzhConfigDao.update(aDefault);
				}
			} else {
				lvyouSpecialtyGzhConfig.setIsDefault(2);
			}
			Config yuanConfig = configDao.getByUserId(1L);
			if (yuanConfig == null) {
			    yuanConfig = new Config();
            }
			if (lvyouSpecialtyGzhConfigDao.save(lvyouSpecialtyGzhConfig) > 0) {
				LvyouSpecialtyGzhConfig aDefault1 = lvyouSpecialtyGzhConfigDao.getDefault();
				yuanConfig.setWxAppId(aDefault1.getAppId());
				yuanConfig.setWxAppSecret(aDefault1.getAppsecret());
				yuanConfig.setUserId(1L);
			}

			if (yuanConfig.getId() == null) {
			    return configDao.save(yuanConfig);
            }
			return configDao.update(yuanConfig);
		}		
	
		
	}
	
	@Override
	public int update(LvyouSpecialtyGzhConfig lvyouSpecialtyGzhConfig){
		return lvyouSpecialtyGzhConfigDao.update(lvyouSpecialtyGzhConfig);
	}
	
	@Override
	public int remove(Long id){
		return lvyouSpecialtyGzhConfigDao.remove(id);
	}
	
	@Override
	public int batchRemove(Long[] ids){
		return lvyouSpecialtyGzhConfigDao.batchRemove(ids);
	}

	@Override
	public LvyouSpecialtyGzhConfig getDefault() {
		return lvyouSpecialtyGzhConfigDao.getDefault();
	}

}
